package bo

import (
	"github.com/shopspring/decimal"
	"time"
)

type OrderDetailBo struct {
	ID                      int64           `json:"id"`       // 主键id
	OrdersID                int64           `json:"ordersId"` // 订单id,关联到orders表主键id
	SpuID                   int64           `json:"spuId"`    // 商品id,关联到spu表主键id
	DishesID                int64           `json:"dishesId"`
	SpuCount                decimal.Decimal `json:"spuCount"`                // 商品数量
	SnapshotPrice           decimal.Decimal `json:"snapshotPrice"`           // 快照单价
	SpuAmount               decimal.Decimal `json:"spuAmount"`               // 商品金额小计
	SnapshotLossRate        decimal.Decimal `json:"snapshotLossRate"`        // 快照损耗率
	SnapshotName            string          `json:"snapshotName"`            // 快照商品名称
	SnapshotProductImageURL string          `json:"snapshotProductImageUrl"` // 快照产品图片
	SnapshotSpuType         int64           `json:"snapshotSpuType"`         // 快照商品类型,0表示基础商品,1表示加工商品
	SnapshotUnit            string          `json:"snapshotUnit"`            // 快照单位
	SnapshotCategoryID      int64           `json:"snapshotCategoryId"`      // 快照分类id
	SnapshotCategory        string          `json:"snapshotCategory"`        // 快照分类
	SnapshotBrand           string          `json:"snapshotBrand"`           // 快照品牌
	SnapshotSupplier        string          `json:"snapshotSupplier"`        // 快照供应商
	Remark                  string          `json:"remark"`                  // 备注
	Status                  int64           `json:"status"`                  // 订单状态,0表示已下单(待采购),10分拣中，20已发货,30已完成,40取消订单
	EnterpriseID            int64           `json:"enterpriseId"`            // 关联到enterprise表主键id
	CustomerID              int64           `json:"customerId"`              // 客户id,关联到enterprise_customer表主键id
	SendGoodsDate           time.Time       `json:"sendGoodsDate"`           // 发货日期
	PurchaserID             int64           `json:"purchaserId"`             // 采购员,关联到
	TotalAmount             decimal.Decimal `json:"totalAmount"`             // 订单金额
	TotalCount              decimal.Decimal `json:"totalCount"`              // 订单商品数量
	OrderNo                 string          `json:"orderNo"`                 // 订单号
	DefaultSupplierID       int64           `json:"defaultSupplierId"`       // 默认供应商,关联到supplier表主键id
	EnterpriseCustomerName  string          `json:"enterpriseCustomerName"`  // 客户名称
}

type TotalOrderSpu struct {
	SpuID          int64           `json:"spuId"`
	SpuName        string          `json:"spuName"`
	Count          decimal.Decimal `json:"count"`
	UnitName       string          `json:"unitName"`
	OrderIDs       []int64         `json:"orderIDs"`
	OrderDetailIDs []int64         `json:"orderDetailIDs"`
}

type TotalOrderSpuBom struct {
	SpuID                int64           `json:"spuId"`
	Count                decimal.Decimal `json:"count"`
	OrderDetailID        int64           `json:"orderDetailId"`
	Category             string          `json:"category"`
	UnitName             string          `json:"unitName"`
	SupplierID           int64           `json:"supplierId"`
	ExpectationGoodsDate time.Time       `json:"expectationGoodsDate"`
}

type SpuRequireInfo struct {
	SpuID                int64           `json:"spuId"`
	Count                decimal.Decimal `json:"count"`
	Entity               *SpuBo          `json:"entity"`
	OrdersSpuID          int64           `json:"ordersSpuId"`
	ExpectationGoodsDate time.Time       `json:"expectationGoodsDate"`
}

type SingleOrderSpu struct {
	SpuID    int64           `json:"spuId"`
	SpuName  string          `json:"spuName"`
	Count    decimal.Decimal `json:"count"`
	UnitName string          `json:"unitName"`
}

type OrdersSpuGroup struct {
	ID              string          `json:"id"`
	SpuID           int64           `json:"spuId"`
	SpuName         string          `json:"spuName"`
	ProductImageURL string          `json:"productImageUrl"`
	RequireCount    decimal.Decimal `json:"requireCount"`
	UnitName        string          `json:"unitName"`
	Count           int64           `json:"count"`
}
